package edu.northwestern.cbits.purple_robot_manager.activities;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import edu.northwestern.cbits.purple_robot_manager.R;
import edu.northwestern.cbits.purple_robot_manager.scripting.JavaScriptEngine;
public class WebActivity extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState)
{
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
this.setContentView(R.layout.layout_web_activity);
}
@SuppressLint(
{ "SetJavaScriptEnabled", "DefaultLocale" })
protected void onResume()
{
super.onResume();
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
WebView webView = (WebView) this.findViewById(R.id.webview);
final Uri uri = this.getIntent().getData();
if (uri != null && uri.getScheme() != null && (uri.getScheme().toLowerCase(Locale.ENGLISH).startsWith("http") || uri.getScheme().toLowerCase(Locale.ENGLISH).startsWith("file")))
{
final WebActivity me = this;
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
me.setProgress(progress * 1000);
}
public void onCloseWindow(WebView window) {
me.finish();
}
public void onReceivedTitle(WebView view, String title) {
me.getSupportActionBar().setTitle(title);
}
});
webView.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(me, description, Toast.LENGTH_LONG).show();
}
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (uri.toString().startsWith("file:///android_asset/") && url.toLowerCase().startsWith("http")) {
me.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
return false;
}
});
webView.loadUrl(uri.toString());
}
else
Toast.makeText(this, R.string.error_missing_uri, Toast.LENGTH_LONG).show();
}
public void onBackPressed()
{
WebView webView = (WebView) this.findViewById(R.id.webview);
if (webView.canGoBack())
webView.goBack();
else
super.onBackPressed();
}
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.menu_web_activity, menu);
Uri uri = this.getIntent().getData();
if (uri == null || uri.toString().startsWith("file:///android_asset/"))
menu.removeItem(R.id.menu_open);
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
final int itemId = item.getItemId();
if (itemId == android.R.id.home)
{
this.onUpPressed();
}
if (itemId == R.id.menu_close)
{
this.finish();
}
if (itemId == R.id.menu_open)
{
JavaScriptEngine engine = new JavaScriptEngine(this);
Uri data = this.getIntent().getData();
if (data != null)
engine.launchUrl(data.toString());
}
return true;
}
private void onUpPressed()
{
if (this.isTaskRoot())
{
Intent intent = new Intent(this, StartActivity.class);
this.startActivity(intent);
}
this.finish();
}
}